package com.lncg.mapper;

import com.lncg.entity.BusinessPortConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 业务端口配置Mapper接口
 * 
 * 提供业务端口配置的数据库操作方法，包括查询和更新端口运行状态。
 * 主要用于Netty服务器启动时读取端口配置，以及更新端口运行状态。
 * 
 * @author LNCG
 * @version 1.2.0
 * @since 2024-10-17
 */
@Mapper
public interface BusinessPortConfigMapper {
    
    /**
     * 查询所有启用的业务端口配置
     * 
     * 用于系统启动时读取需要启动的端口配置。
     * 只返回status=1（启用）的端口配置，按端口号升序排列。
     * 
     * @return 启用的业务端口配置列表
     */
    List<BusinessPortConfig> selectAllEnabled();
    
    /**
     * 根据端口号查询配置
     * 
     * @param port 端口号
     * @return 业务端口配置，如果不存在则返回null
     */
    BusinessPortConfig selectByPort(@Param("port") Integer port);
    
    /**
     * 更新指定端口的运行状态
     * 
     * 用于更新端口启动/停止后的运行状态。
     * 同时更新update_by和update_time字段。
     * 
     * @param port 端口号
     * @param isRunning 运行状态：1-运行中，0-已停止
     * @param updateBy 更新者标识
     * @return 影响的行数
     */
    int updateRunningStatus(@Param("port") Integer port, @Param("isRunning") Integer isRunning, @Param("updateBy") String updateBy);
    
    /**
     * 更新所有端口的运行状态为停止
     * 
     * 用于系统启动前重置所有端口状态，或系统停止时更新状态。
     * 将所有is_running=1的端口状态更新为0。
     * 
     * @param updateBy 更新者标识
     * @return 影响的行数
     */
    int updateAllRunningStatusToStop(@Param("updateBy") String updateBy);
}
